Learn the difference, it could save your life
strict evaluation, eager evaluation, greedy evaluation
non-strict evaluation, lazy evaluation
L'exécution d'un bout de code ne se fait pas avant que les résultats de ce bout de code ne soient réellement nécessaires.
A JavaScript utility library delivering consistency, modularity, performance, & extras.
var t = [0, 1, 2, 3, 4];
function plusUn(nb) {
console.log(nb + ' + 1');
if (nb > 2) console.log('Traitement long');
return nb + 1;
}
function petit(nb) {
console.log(nb + ' plus petit que 3 ?');
return nb < 3;
}var js = t
.map(plusUn)
.filter(petit)
.slice(0, 2);0 + 1
1 + 1
2 + 1
3 + 1
Traitement long
4 + 1
Traitement long
1 plus petit que 3 ?
2 plus petit que 3 ?
3 plus petit que 3 ?
4 plus petit que 3 ?
5 plus petit que 3 ?
[ 1, 2 ]
var _ = require('lodash');
var lodash = _(t)
.map(plusUn)
.filter(petit)
.take(2)
.value();0 + 1
1 plus petit que 3 ?
1 + 1
2 plus petit que 3 ?
[ 1, 2 ]
Nope
Avantages : peut augmenter la maintenabilité et les performances
Inconvénients : peut introduire de l'overhead (dépend pas mal de la techno)